#!/usr/make
#
# Makefile for SQLITE, use in conjunction with mingw64-cross-build.sh
# since some patches are needed (libshell.c etc.)

#### The toplevel directory of the source tree.  This is the directory
#    that contains this "Makefile.in" and the "configure.in" script.
#
TOP = ../sqlite3

#### C Compiler and options for use in building executables that
#    will run on the platform that is doing the build.
#
BCC = gcc -g -O2
#BCC = /opt/ancic/bin/c89 -0

#### If the target operating system supports the "usleep()" system
#    call, then define the HAVE_USLEEP macro for all C modules.
#
USLEEP = 
#USLEEP = -DHAVE_USLEEP=1

#### If you want the SQLite library to be safe for use within a 
#    multi-threaded program, then define the following macro
#    appropriately:
#
THREADSAFE = -DSQLITE_THREADSAFE=1
#THREADSAFE = -DSQLITE_THREADSAFE=0

#### Specify any extra linker options needed to make the library
#    thread safe
#
#THREADLIB = -lpthread
THREADLIB = 

#### Specify any extra libraries needed to access required functions.
#
#TLIBS = -lrt    # fdatasync on Solaris 8
TLIBS = -lcomdlg32

#### Leave SQLITE_DEBUG undefined for maximum speed.  Use SQLITE_DEBUG=1
#    to check for memory leaks.  Use SQLITE_DEBUG=2 to print a log of all
#    malloc()s and free()s in order to track down memory leaks.
#    
#    SQLite uses some expensive assert() statements in the inner loop.
#    You can make the library go almost twice as fast if you compile
#    with -DNDEBUG=1
#
#OPTS = -DSQLITE_DEBUG=2
#OPTS = -DSQLITE_DEBUG=1
#OPTS = 
OPTS =	-DNDEBUG=1 -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_SOUNDEX=1 \
	-DSQLITE_ENABLE_MEMSYS5=1 \
	-DWIN32=1 -DSQLITE_OS_WIN=1 $(THREADSAFE)
#OPTS += -DHAVE_FDATASYNC=1

#### The suffix to add to executable files.  ".exe" for windows.
#    Nothing for unix.
#
EXE = .exe
#EXE =

#### C Compile and options for use in building executables that 
#    will run on the target platform.  This is usually the same
#    as BCC, unless you are cross-compiling.
#
#TCC = gcc -O6
#TCC = gcc -g -O0 -Wall
#TCC = gcc -g -O0 -Wall -fprofile-arcs -ftest-coverage
TCC = /opt/mingw64/bin/x86_64-w64-mingw32-gcc -O2 -DNO_TCL
#TCC = /opt/ansic/bin/c89 -O +z -Wl,-a,archive

#### Tools used to build a static library.
#
#AR = ar cr
AR = /opt/mingw64/bin/x86_64-w64-mingw32-ar cr
#RANLIB = ranlib
RANLIB = /opt/mingw64/bin/x86_64-w64-mingw32-ranlib

#### Extra compiler options needed for programs that use the TCL library.
#
TCL_FLAGS =
#TCL_FLAGS = -DSTATIC_BUILD=1
#TCL_FLAGS = -I/home/drh/tcltk/8.4linux
#TCL_FLAGS = -I/home/drh/tcltk/8.4win -DSTATIC_BUILD=1
#TCL_FLAGS = -I/home/drh/tcltk/8.3hpux

#### Linker options needed to link against the TCL library.
#
LIBTCL =
#LIBTCL = -ltcl -lm -ldl
#LIBTCL = /home/drh/tcltk/8.4linux/libtcl8.4g.a -lm -ldl
#LIBTCL = /home/drh/tcltk/8.4win/libtcl84s.a -lmsvcrt
#LIBTCL = /home/drh/tcltk/8.3hpux/libtcl8.3.a -ldld -lm -lc

#### Compiler options needed for programs that use the readline() library.
#
READLINE_FLAGS =
#READLINE_FLAGS = -DHAVE_READLINE=1 -I/usr/include/readline

#### Linker options needed by programs using readline() must link against.
#
LIBREADLINE =
#LIBREADLINE = -static -lreadline -ltermcap

#### Which "awk" program provides nawk compatibilty
#
# NAWK = nawk
NAWK = awk

#### Special libshell target
LIBOBJ += libshell.o

libshell.o:	$(TOP)/src/libshell.c sqlite3.h
	$(TCCX) -c $(TOP)/src/libshell.c

SRC += $(TOP)/src/libshell.c

# You should not have to change anything below this line
###############################################################################
include $(TOP)/main.mk

ifeq ($(MSVCRT),70)
	TCCX   += -D__MSVCRT_VERSION=0x0700
	LMSVCRT = -nodefaultlibs -lmingw32 -lgcc_eh -lmoldname -lmingwex -lgcc -lmsvcr70
endif
ifeq ($(MSVCRT),80)
	TCCX   += -D__MSVCRT_VERSION=0x0800
	LMSVCRT = -nodefaultlibs -lmingw32 -lgcc_eh -lmoldname -lmingwex -lgcc -lmsvcr80
endif
ifeq ($(MSVCRT),90)
	TCCX   += -D__MSVCRT_VERSION=0x0900
	LMSVCRT = -nodefaultlibs -lmingw32 -lgcc_eh -lmoldname -lmingwex -lgcc -lmsvcr90
endif
ifeq ($(MSVCRT),100)
	TCCX   += -D__MSVCRT_VERSION=0x0A00
	LMSVCRT = -nodefaultlibs -lmingw32 -lgcc_eh -lmoldname -lmingwex -lgcc -lmsvcr100
endif
ifeq ($(LMSVCRT),)
	LMSVCRT = -lmsvcrt
endif

sqlite3.dll:	$(LIBOBJ)
	rm -f libsqlite3.a
	$(TCC) $(CFLAGS) -shared -Wl,--kill-at \
	    -Wl,--out-implib,libsqlite3.a -Wl,--strip-all \
	    -o sqlite3.dll $(LIBOBJ) $(LMSVCRT) \
	    -lcomdlg32 -lkernel32 -luser32
